package org.zty.util;
import java.io.File;
import java.util.Random;


/**
 * 上传时，文件路径，文件名称生成规则
 * @author Administrator
 *
 */
public class FileRulerUtil {
	private static final String SP = File.separator;
	private static final int[] INT_ARRAY={0,1,2,3,4,6,7,8,9};
	private static final Random rad = new Random();
	/**
	 * 文件保存路径的统一规范
	 * yyyy/yyyyMM/yyyyMMdd/
	 * @return
	 */
	public static String savePath(){
		StringBuffer sb = new StringBuffer();
		int y=DateUtil.getCurrentYear();
		sb.append(y);
		sb.append("/");
		
		sb.append(y);
		int m = DateUtil.getCurrentMonth();
		if(m>=10){
			sb.append(m);
		}
		else
		{
			sb.append(0);
			sb.append(m);
		}
		sb.append("/");
		sb.append(y);
		if(m>=10){
			sb.append(m);
		}
		else
		{
			sb.append(0);
			sb.append(m);
		}
		int d = DateUtil.getCurrentDay();
		if(d>=10){
			sb.append(d);
		}
		else
		{
			sb.append(0);
			sb.append(d);
		}
		sb.append("/");
		String tmp = sb.toString();
		sb=null;
		return tmp;
	}
	/**
	 * 带年月日时分秒+5位随机数的文件名
	 * @return
	 */
	public static String saveFileName(){
		return saveFileName(10);
	}
	
	/**
	 * 按照yyyyMMddhhmmss+数字随机数生成文件名
	 * @param len
	 * @return
	 */
	public static String saveFileName(int len){
		StringBuffer sb = new StringBuffer();
		sb.append(DateUtil.getCurrentYear());
		int m = DateUtil.getCurrentMonth();
		if(m>=10){
			sb.append(m);
		}
		else
		{
			sb.append(0);
			sb.append(m);
		}
		int d = DateUtil.getCurrentDay();
		if(d>=10){
			sb.append(d);
		}
		else
		{
			sb.append(0);
			sb.append(d);
		}
		int h = DateUtil.getCurrentHour();
		if(h>=10){
			sb.append(h);
		}
		else
		{
			sb.append(0);
			sb.append(h);
		}
		int mm = DateUtil.getCurrentMinute();
		if(mm>=10)
		{
			sb.append(mm);
		}
		else
		{
			sb.append(0);
			sb.append(mm);
		}
		int s = DateUtil.getCurrentSecond();
		if(s>=10)
		{
			sb.append(s);
		}
		else
		{
			sb.append(0);
			sb.append(s);
		}
		int r=0;
		for(int i=0;i<len;i++){
			r = random(9);
			sb.append(INT_ARRAY[r]);
		}
		String tmp = sb.toString();
		sb=null;
		return tmp;
	}
	private static int random(int i){
		return rad.nextInt(i);
	}
	
	public static String getRandomStr(int len) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < len; i++) {
			sb.append(rad.nextInt(9));
			try {
				Thread.sleep(5);
			} catch (Exception e) {
			}
		}
		return sb.toString();
	}

	/**
	 * 将格式为：20100310***的文件转换为路径方式
	 * 
	 * @param fileName
	 * @return
	 */
	public static String parseFileName2Path(String fileName) throws ZException {
		StringBuffer sb = new StringBuffer();
		try {
			sb.append(fileName.substring(0, 4));
			sb.append(SP);
			sb.append(fileName.substring(0, 6));
			sb.append(SP);
			sb.append(fileName.substring(0, 8));
			sb.append(SP);
			sb.append(fileName);
		} catch (Exception e) {
			throw new ZException("分解路径错误", e);
		}
		return sb.toString();
	}
	/**
	 * 将格式为：20100310***的文件转换为路径方式
	 * @param fileName 文件名
	 * @param sp 分割符号"/"，"\"或其他
	 * @return
	 * @throws MException
	 */
	public static String parseFileName2Path(String fileName,String sp) throws ZException {
		StringBuffer sb = new StringBuffer();
		try {
			sb.append(fileName.substring(0, 4));
			sb.append(sp);
			sb.append(fileName.substring(0, 6));
			sb.append(sp);
			sb.append(fileName.substring(0, 8));
			sb.append(sp);
			sb.append(fileName);
		} catch (Exception e) {
			throw new ZException("分解路径错误", e);
		}
		return sb.toString();
	}
	/**
	 * 生成日期格式的文件夹名称
	 * @return
	 */
	public static String getDayDirName(){
		StringBuffer sb = new StringBuffer();
		sb.append(DateUtil.getCurrentYear());
		int m = DateUtil.getCurrentMonth();
		if(m>=10){
			sb.append(m);
		}
		else
		{
			sb.append(0);
			sb.append(m);
		}
		int d = DateUtil.getCurrentDay();
		if(d>=10){
			sb.append(d);
		}
		else
		{
			sb.append(0);
			sb.append(d);
		}
//		int h = DateUtil.getCurrentHour();
//		if(h>=10){
//			sb.append(h);
//		}
//		else
//		{
//			sb.append(0);
//			sb.append(h);
//		}
//		int mm = DateUtil.getCurrentMinute();
//		if(mm>=10)
//		{
//			sb.append(mm);
//		}
//		else
//		{
//			sb.append(0);
//			sb.append(mm);
//		}
//		int s = DateUtil.getCurrentSecond();
//		if(s>=10)
//		{
//			sb.append(s);
//		}
//		else
//		{
//			sb.append(0);
//			sb.append(s);
//		}
//		int r=0;
//		for(int i=0;i<len;i++){
//			r = random(9);
//			sb.append(INT_ARRAY[r]);
//		}
		String tmp = sb.toString();
		sb=null;
		return tmp;
	}
}
